home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Tools⁄Additions / MacScheme20 / Contributed / SCOOPS / readme.doc < prev    next >
Encoding:
Text File  |  1987-12-14  |  3.6 KB  |  76 lines  |  [TEXT/EDIT]

  1. ; ............ A SCOOPS OBJECT SYSTEM IN MACSCHEME: README.DOC ............
  2. ;
  3. ;
  4. ;The included code was prepared by John Ulrich and is distributed by Semantic
  5. ;Microsystems as a service to the Scheme community.  You may copy, modify, 
  6. ;and distribute it provided you include this notice in any copy or modified 
  7. ;copy. This code should not be regarded as any sort of endorsement of SCOOPS 
  8. ;as an object system for Scheme.  Semantic intends to support a Scheme 
  9. ;object system standard if and when one is adopted by the Scheme committee.
  10. ;
  11. ;SCOOPS was originally specified and implemented by Texas Instruments for
  12. ;PCScheme. By implementing SCOOPS in MacScheme I hope to help those who 
  13. ;are porting code between the two Scheme dialects. I have attempted to
  14. ;follow the specification as given in the PCScheme manual; however, there
  15. ;will likely be some subtle differences. Any discovered differences between
  16. ;the PCScheme and the MacScheme implementations should be brought to my
  17. ;attention.
  18.  
  19. ;For those familiar with SCOOPS, files readme.doc and examples.sch
  20. ;will get you started.  Those unfamiliar with SCOOPS should also read 
  21. ;the TI documentation found in scoops.doc.part1 and scoops.doc.part2.
  22. ;
  23. ;
  24. ;
  25. ;                                    John Ulrich
  26. ;                                    P.O. Box 748
  27. ;                                    Menlo Park
  28. ;                                    CA 94025
  29. ;
  30. ;                                    November,1987
  31. ;
  32. ;
  33. ;
  34. ;I have added a few features to those of the original SCOOPS. In the PCScheme
  35. ;implementation, the send and send-if-handles special forms do not accept
  36. ;first class objects as messages. Therefore I have included two new 
  37. ;functions, called send: and send-if-handles:. The function forms will be
  38. ;preferred in those cases where the message passed to an object is determined
  39. ;by a computation (e.g (send: obj (if (> x y) 'max 'min))). 
  40. ;
  41. ;In addition to the define-method form, the MacScheme implementation permits
  42. ;the inclusion of method specifications in a class definition. Unless your
  43. ;program requires runtime redefinition of methods, you should always use
  44. ;this means for defining methods and avoid using define-method.  If you
  45. ;must use define-method, there are several things that you should know.
  46. ;First, define-method calls eval.  MacScheme supports a compiling eval.
  47. ;This means that the use of define-method ammounts to recompiling parts
  48. ;of your code at runtime. Because of inheritance, a single define-method
  49. ;can lead to a recompilation of many classes. This can reduce program 
  50. ;efficiency. Secondly, programs that use define-method cannot depend  
  51. ;on lexical environments unless the optimization is set to 0 or 1.
  52. ;If your methods refer only to instance variables and class variables, you
  53. ;can run with the optimization set to 2 or 3 and get correct results. 
  54. ;FInally if you use define-method (ie eval) you will not be able to make
  55. ;your program into a stand alone clickable application. 
  56. ;
  57. ;Sometimes an object is passed a message within a tight loop. In this 
  58. ;situation, message dispatching contributes significantly to the runtime.
  59. ;To cure this problem, I have included a fuction called dispatch. The
  60. ;form (dispatch obj msg) returns the function applied to the arguments of
  61. ;(send obj msg arg1 ... argn). For instance the iterative form
  62. ;
  63. ;          
  64. ;           (mapcar (dispatch obj msg) '(1 2 3 4 5))
  65. ;
  66. ;has the same effect as
  67. ;
  68. ;           (mapcar (lambda (x)(send obj msg x)) '(1 2 3 4 5)) 
  69. ;
  70. ;without the overhead of looking up the method five times.
  71.  
  72. ; [This implementation of SCOOPS calls EVAL.  This means that the
  73. ; application builder will not be able to remove unused code once
  74. ; you have loaded SCOOPS. -- Semantic Microsystems.]
  75.  
  76.